package com.hmall.user.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.hmall.common.exception.BadRequestException;
import lombok.Getter;

@Getter
public enum UserStatus {

    /**
     * FROZEN 用户被禁止使用系统服务
     */
    FROZEN(0, "禁止使用"),
    /**
     * NORMAL 用户可以正常使用系统服务
     */
    NORMAL(1, "已激活");

    /**
     * 存储到数据库的枚举值 @EnumValue 用于标识哪个字段用于映射到数据库
     */
    @EnumValue
    final int value;

    /**
     * 状态描述信息
     */
    final String desc;

    /**
     * 枚举类的构造函数，初始化枚举值和描述信息
     * @param value
     * @param desc
     */
    UserStatus(Integer value, String desc) {
        this.value = value;
        this.desc = desc;
    }

    /**
     * 将数值转换为对应的枚举值
     * @param value 对应枚举值
     * @return  对应枚举实例
     */
    public static UserStatus of(int value) {
        if (value == 0) {
            return FROZEN;
        }
        if (value == 1) {
            return NORMAL;
        }
        throw new BadRequestException("账户状态错误");
    }
}